package pe.gob.inei.sees.businessobjects
{
	import com.adobe.serialization.json.JSON;
	
	import mx.collections.ArrayCollection;
	import mx.controls.Alert;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	import mx.rpc.http.HTTPService;
	
	import pe.gob.inei.sees.controllers.SeesController;
	import pe.gob.inei.sees.events.TemaEvent;
	import pe.gob.inei.sees.util.SEESVariables;
	
	public class TemaBO {
		
		public var metodo:String;
		public var suscriptor:SeesController;
		
		private var servicio:HTTPService = new HTTPService();
		private var acTemaTmp:ArrayCollection = new ArrayCollection();
		
		public function obtenerTemas():void {
			servicio.url = SEESVariables.rutaNueva;
			servicio.resultFormat = 'text';
			servicio.addEventListener(ResultEvent.RESULT, setTemas);
			servicio.addEventListener(FaultEvent.FAULT, onFaultHttpService);
			servicio.send();
	  	}
	  	
	  	private function onFaultHttpService():void {
	  		Alert.show("Se produjo un error")
	  	}
	  	
	  	private function setTemas (event:ResultEvent):void {
			//obtener los datos casteados JSON y convertir a String
			var rawData:String = String(event.result);
			
			//descifrar los datos de ActionScript mediante la API de JSON 
			//en este caso, los datos JSON es un serializar matriz de objetos
			var arr:Array = (JSON.decode(rawData) as Array);
						
			//Crear un nuevo ArrayCollection pasando el de-serializa Array
			//Los ArrayCollections trabajan mejor como DataProviders, ya que se pueden ver los cambios.
			acTemaTmp = new ArrayCollection(arr);
			
			//Pasar el ArrayCollection a la cuadrícula de datos como su proveedor de datos.
			//grid.dataProvider = dp;
			//Alert.show(acTemaTmp.toString());
			suscriptor.dispatchEvent(new TemaEvent(metodo, acTemaTmp));
		}
	}
}